package com.nuoniu.sibanyun.service.cm;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.controller.cm.CmContractChange;
import com.nuoniu.sibanyun.entity.cm.CmContract;

import java.util.List;

/**
 * <p>
 * 合同管理主表 服务类
 * </p>
 *
 * @author 小啊刚
 * @since 2021-10-21
 */
public interface ICmContractService extends IService<CmContract> {

    /**
     * 保存合同
     * @author 小啊刚
     * @date 2021-10-21
     */
    void saveContract(CmContract contract);

    /**
     * 获取编码
     * @author 小啊刚
     * @date 2021-10-22
     */
    String getCode(Integer typeId);

    /**
     * 获取合同详情
     * @author 小啊刚
     * @date 2021-10-22
     */
    CmContract getDetail(Long id);

    /**
     * 删除合同
     * @author 小啊刚
     * @date 2021-10-22
     */
    void delete(Long id);

    /**
     * 审核/弃审
     * @author 小啊刚
     * @date 2021-10-22
     */
    void examine(Long id, Integer status);

    /**
     * 归档
     * @author 小啊刚
     * @date 2021-10-22
     */
    void file(Long id);

    /**
     * 中止
     * @author 小啊刚
     * @date 2021-10-22
     */
    void close(Long id);

    /**
     * 合同变更
     * @author 小啊刚
     * @date 2021-10-22
     */
    void changeContract(CmContract cmContract);

    /**
     * 获取变更记录
     * @author 小啊刚
     * @date 2021-10-23
     */
    List<CmContractChange> getChangeList();

    /**
     * 获取变更详情
     * @author 小啊刚
     * @date 2021-10-23
     */
    CmContract getChangeDetail(Integer changeId);
}
